#ifndef __CG__H__
#define __CG__H__

#define MAX_CPU_WEIGHT 10000
#include "cg_utils.h"
// 为每个容器分配一个cgroup
// 每个容器的group的抽象数据结构，使用链表进行管理
// 记录该容器的cpu分配、cpu数量分配、内存限制
struct subgroup {
    int container_id;
    unsigned int cpu_share; // cpu利用率 限制，默认0 表示无限制
    unsigned int mem_limit; // 0表示无限制
    unsigned int cpus;      // 可以使用的cpu个数
    unsigned int pid;       // 容器的pid
    char cgroupPath[MAX_PATH_LENGTH]; // 容器的cgroup路径
};

// api

int create_cgroup(int conatiner_id);
int delete_cgroup(int conatiner_id);
void enable_controller(char *controller);
int apply_to_cgroup(int container_id, int pid);

//  修改容器的cpu最高占用率，应当时1-100的值
int modify_cpu_share(int container_id, unsigned int percent);
//  修改容器的内存占用限制，单位为Mb
int modify_mem_limit(int container_id, unsigned int memory_size_mb);
//  修改容器的可用cpu数量
int modify_cpus(int container_id, unsigned int number);
#endif // !__CG__H__
